package com.example.demo.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.Random;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 马拉圈
 * Date: 2023-09-03
 * Time: 12:30
 */
public class UserUtils {
    /**
     * 加密
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        // 1. 获取盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 2. md5加密
        String plusPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes(StandardCharsets.UTF_8));
        // 3. 将盐值和加密密码组合返回
        return salt + "$" + plusPassword;
    }

    /**
     * 验密
     * @param password
     * @param dbPassword
     * @return
     */
    public static boolean confirm(String password, String dbPassword) {
        // 1. 获取到[盐值]和[正确的加密密码]
        String[] group = dbPassword.split("\\$");
            // 在split函数的参数字符串里，这个$有特殊含义，需要转义一下
        // 2. md5加密
        String plusPassword = DigestUtils.md5DigestAsHex((group[0] + password).getBytes(StandardCharsets.UTF_8));
        System.out.println(plusPassword);
        // 3. 对比
        return group[1].equals(plusPassword);
    }

    public static String getUsername() {
        // 获取当前时间戳
        long timestamp = System.currentTimeMillis();

        // 生成随机数
        Random random = new Random();
        int randomNumber = random.nextInt(100);

        // 结合时间戳和随机数生成唯一标识符
        String identifier = String.valueOf(timestamp) + String.valueOf(randomNumber);

        return identifier;
    }
}
